package com.demo219_存在重复元素2;
/**
 * 使用一个固定大小的滑动窗口来实现
 *
 * 窗口大小为K , 每次向右滑动, 判断里面是否存在相同的元素
 *
 * 先移除掉: 索引为第一个的,  后面再添加上, 始终保持窗口大小为 这个 K
 *
 * 【注意】 在移除的时候 第i个元素并没有加进去的。
 *
 *
 */

import java.util.HashSet;
import java.util.TreeSet;

public class Solution_滑动窗口_官方 {
    public static void main(String[] args) {
        int[] ints={1,2,3,1,2,3};
        int k=2;
        boolean b = containsNearbyDuplicate(ints, k);
        System.out.println(b);
    }
    public static boolean containsNearbyDuplicate(int[] nums, int k) {

        HashSet<Integer> set = new HashSet<>();
        int le = nums.length;
        for (int i = 0; i < le; i++) {
            if (i>k){
                set.remove(nums[i-k-1]); // 移除掉 大小为K的窗口的第一个元素  是i-k-1   不是这个
            }
            if (!set.add(nums[i])){
                return true;
            }
        }
        return false;
    }
}
